
// get color ver css
getColor(colorx, alpha = 1)
    unquote("rgba(var(--vs-"+colorx+"), "+alpha+")")


getVar(var)
    unquote("var(--vs-"+var+")")

/**
* dirValue
* this mixin is for the properties that take "right" or "left" as value
* it will automatically create two classes:
* vuesax-app-is-rtl forwared with class in RTL case
* vuesax-app-is-ltr forwared with class in LTR case
* the value passed will be used in LTR case and the opposite will be assigned automatically
* for the RTL 
* example: 
  .someClass
    dirValue(float, left)

    [Compiled]

  .vuesax-app-is-rtl
    .someClass
      float: right

  .vuesax-app-is-ltr
    .someClass
      float: left
* 
*/
dirValue(prop, value)
  rtDir=right
  if value == right 
    rtDir=left
  .vuesax-app-is-rtl &
    {prop}: rtDir
  .vuesax-app-is-ltr &
    {prop}: value


/**
* propWithDir
* this mixin is for the properties that have direction like "margin-left" or "padding-left"
* as explained above it will automatically create two classes
* @params:
*   - prop ==> is the property name [eg: 'margin']
*   - dir  ==> is the direction of the property [eg: 'left' or 'right']
*   - value ==> is the value (value will be assigned to LTR class) [eg: '10px']
*   - otherValues ==> any others value you want to pass [eg: '!important',
         if the propery is transform you may pass some thing like 'rotate(20deg) skew(10deg)'
      ]
* if you want to use the mixin with transform, the mixin work with translate by default
* when using transform you should pass:
* transform as your first parameter
* null as your second parameter (since transform dose not take direction in its definiton)
* the value you want to pass in the third parameter, but you must pass it as array [eg: (10px 10px)]
* the mixin will convert the first value (x-asis) to negative [eg: (10px 10px) ==> (-10px 10px)]
* example using the mixin with transform:
  .someClass
    propWithDir(transform, null, (10px))

    [Compiled]

  .vuesax-app-is-rtl
    .someClass
      transform: translate(-10px, 10px)

  .vuesax-app-is-ltr
    .someClass
      transform: translate(10px, 10px)

* in case of using the mixin with justify-content
* a class with the opposite value will be assigned to RTL
* in case of using the mixin with right or left property
* a class with the oppoiste property will be assigned to RTL
* eg:
  .someClass
    propWithValue(right, null, 0px)

    [Compiled]
  
  .vuesax-app-is-rtl
    .someClass
      left: 0px

  .vuesax-app-is-ltr
    .someClass
      right: 0px

*/
propWithDir(prop, dir = null, value = null, otherValues = null)
  if prop == transform
    rtlTransDir = (0px 0px)
    rtlTransDir[1] = value[1] || rtlTransDir[1]
    rtlTransDir[0] = value[0] * -1
    .vuesax-app-is-rtl &
      transform: translate(rtlTransDir[0], rtlTransDir[1])  otherValues
    .vuesax-app-is-ltr &
      transform: translate(value[0], value[1] || rtlTransDir[1])  otherValues
  // justify-content case
  else if prop == justify-content
    rtlVal = ''
    if value == flex-start
      rtlVal = flex-end
    else 
      rtlVal = flex-start
    .vuesax-app-is-rtl & 
      justify-content: rtlVal otherValues
    .vuesax-app-is-ltr &
      justify-content: value otherValues

  // right or left properties case
  else if prop == right || prop == left 
    rtlProp = '' 
    if prop == right 
      rtlProp = left 
    else 
      rtlProp = right 
    .vuesax-app-is-rtl & 
      {rtlProp}: value otherValues
    .vuesax-app-is-ltr &
      {prop}: value otherValues

  // default case
  else 
    rtlDir=right 
    if dir == right
      rtlDir=left
    .vuesax-app-is-rtl &
      {prop}-{rtlDir}: value otherValues
    .vuesax-app-is-ltr &
      {prop}-{dir}: value otherValues
